<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>延迟对象</title>
    <script src="jquery.js"></script>
</head>
<body>
    <script>
        /*
            $.get()
            返回一个deffered对象(类似promise)
            表示本次请求的延时对象
        */
        var d = $.get('data.json') 

        /*
            done() 请求成功的cb，类似promise的then()
            fail() 请求失败的cb，类似promise的catch()
            always() 请求完成时的cb，promise中没有
        */

        d.done(function(res){
            console.dir('成功')
        })
        d.fail(function(){
            console.dir('失败')
        })
        d.always(function(){
            console.log('请求结束了')
        })
    
        // 生成状态不可修改的promise对象，为了兼容promise
        var p = d.promise()
        console.dir(p)

        /*
            回调对象 给jQuery写插件
            add()
            fire() fireWith()改变this指向 fried()
        */
        var c = new $.Callbacks()

        c.add(function(){
            console.log(this)
        })
        c.add(function(){
            console.log('这是第二个回调函数')
        })
        $.get('data.json',function(){
            c.fire() //调用多个回调函数，可以使用回调对象
        }) 
        
    </script>
</body>
</html>